Buttons

Buttons are the primary controls for setting a state or initiating an application action.  They're used for the controls in title bars (the miniaturize and close buttons), for Cancel and the other choices that dismiss attention panels, and in most other situations where a basic control device is called for.

All buttons respond to a click; some also respond to being pressed.  Those that respond to being pressed send an instruction to the application immediately as the user pushes the mouse button down.  Typically, they repeat the instruction at regular intervals-as long as the mouse button is held down and the cursor is kept over the button on-screen-for a continuous, iterative action.  Users can drag away from the button and back again to stop and restart the action.  A button that responds only to being clicked sends its instruction to the application when the user releases the mouse button, provided the cursor is over the button on-screen.

Buttons that are used to set a state display one state before being clicked and another after the click.  The difference in state is generally shown by the presence or absence of highlighting or by changing the icon the button displays.  It can also be accomplished by changing the button's label.  

A button's label usually states, in a succinct shorthand, what action it causes the application to take.  Even when a button purports to label a state, users are apt to think of it not as the current state, but as the state that will be set if the button is clicked.  In other words, they're liable to interpret it as an action.  An ªOnº button, for example, is more likely to be interpreted to mean ªPress this to turn something on,º than ªThis is now on.º

It's best, therefore, to use icons and highlighting to show the current state, and reserve the button's label as a brief statement of what the button does.  

A button with an action label shouldn't change the action it performs.  Although it's sometimes tempting to alter the action with the button's state-to switch between ªStartº and ªStop,º or between ªEraseº and ªRestore,º for example-it's best to provide a different button for each action and disable those that aren't operable. 

Button labels should be capitalized like menu commands:  The first and last words begin with uppercase letters and the words between are capitalized as they would be in a title.

Dimming the label of a button (using gray text) indicates that the button is disabled.